﻿2026-08-28T15:28:27.8524939Z Current runner version: '2.336.0'
2026-08-28T15:28:27.8566867Z ##[group]Runner Image Provisioner
2026-08-28T15:28:27.8568261Z Hosted Compute Agent
2026-08-28T15:28:27.8569320Z Version: 20260819.586
2026-08-28T15:28:27.8570366Z Commit: 3cc4a88dfa507ef76119ad1bb3eccc6378bb2b76
2026-08-28T15:28:27.8571513Z Build Date: 2026-08-18T23:20:18Z
2026-08-28T15:28:27.8572755Z Worker ID: {2bfa9a60-4f7c-4fd8-98e4-3aea98525723}
2026-08-28T15:28:27.8574196Z Azure Region: eastus2
2026-08-28T15:28:27.8575127Z ##[endgroup]
2026-08-28T15:28:27.8577298Z ##[group]Operating System
2026-08-28T15:28:27.8578273Z Ubuntu
2026-08-28T15:28:27.8579256Z 24.04.4
2026-08-28T15:28:27.8580126Z LTS
2026-08-28T15:28:27.8581016Z ##[endgroup]
2026-08-28T15:28:27.8581898Z ##[group]Runner Image
2026-08-28T15:28:27.8582873Z Image: ubuntu-24.04
2026-08-28T15:28:27.8584164Z Version: 20260823.283.1
2026-08-28T15:28:27.8586397Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260823.283/images/ubuntu/Ubuntu2404-Readme.md
2026-08-28T15:28:27.8589095Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260823.283
2026-08-28T15:28:27.8590741Z ##[endgroup]
2026-08-28T15:28:27.8592632Z ##[group]GITHUB_TOKEN Permissions
2026-08-28T15:28:27.8595933Z Contents: read
2026-08-28T15:28:27.8596880Z Metadata: read
2026-08-28T15:28:27.8597747Z ##[endgroup]
2026-08-28T15:28:27.8601647Z Secret source: Actions
2026-08-28T15:28:27.8603840Z Prepare workflow directory
2026-08-28T15:28:27.9203200Z Prepare all required actions
2026-08-28T15:28:27.9277249Z Getting action download info
2026-08-28T15:28:28.1225587Z Download action repository 'actions/checkout@v4' (SHA:11d5960a326750d5838078e36cf38b85af677262)
2026-08-28T15:28:28.3685088Z Download action repository 'actions/setup-python@v5' (SHA:a26af69be951a213d495a4c3e4e4022e16d87065)
2026-08-28T15:28:28.5738032Z Complete job name: Backend – full suite (minimum 667 tests)
2026-08-28T15:28:28.6571257Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:28:28.6581076Z ##[group]Run actions/checkout@v4
2026-08-28T15:28:28.6581900Z with:
2026-08-28T15:28:28.6582423Z   fetch-depth: 0
2026-08-28T15:28:28.6582985Z   repository: Gamexgit/FinanceManager
2026-08-28T15:28:28.6588018Z   token: ***
2026-08-28T15:28:28.6588553Z   ssh-strict: true
2026-08-28T15:28:28.6589090Z   ssh-user: git
2026-08-28T15:28:28.6589622Z   persist-credentials: true
2026-08-28T15:28:28.6590191Z   clean: true
2026-08-28T15:28:28.6590715Z   sparse-checkout-cone-mode: true
2026-08-28T15:28:28.6591339Z   fetch-tags: false
2026-08-28T15:28:28.6591884Z   show-progress: true
2026-08-28T15:28:28.6592435Z   lfs: false
2026-08-28T15:28:28.6593047Z   submodules: false
2026-08-28T15:28:28.6593696Z   set-safe-directory: true
2026-08-28T15:28:28.6594298Z   allow-unsafe-pr-checkout: false
2026-08-28T15:28:28.6595130Z env:
2026-08-28T15:28:28.6595604Z   PYTHONPATH: src
2026-08-28T15:28:28.6596130Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:28.6596903Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-28T15:28:28.6597932Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-28T15:28:28.6598767Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:28.6599372Z ##[endgroup]
2026-08-28T15:28:28.8261470Z Syncing repository: Gamexgit/FinanceManager
2026-08-28T15:28:28.8264586Z ##[group]Getting Git version info
2026-08-28T15:28:28.8265936Z Working directory is '/home/runner/work/FinanceManager/FinanceManager'
2026-08-28T15:28:28.8267923Z [command]/usr/bin/git version
2026-08-28T15:28:29.4954598Z git version 2.55.0
2026-08-28T15:28:29.4968023Z ##[endgroup]
2026-08-28T15:28:29.4979285Z Temporarily overriding HOME='/home/runner/work/_temp/6ebc7533-85b5-4eac-91c0-78cbd33ef045' before making global git config changes
2026-08-28T15:28:29.4982972Z Adding repository directory to the temporary git global config as a safe directory
2026-08-28T15:28:29.4986122Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:29.4990479Z Deleting the contents of '/home/runner/work/FinanceManager/FinanceManager'
2026-08-28T15:28:29.4993743Z ##[group]Initializing the repository
2026-08-28T15:28:29.4995707Z [command]/usr/bin/git init /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:29.4998267Z hint: Using 'master' as the name for the initial branch. This default branch name
2026-08-28T15:28:29.5000646Z hint: will change to "main" in Git 3.0. To configure the initial branch name
2026-08-28T15:28:29.5003106Z hint: to use in all of your new repositories, which will suppress this warning,
2026-08-28T15:28:29.5011525Z hint: call:
2026-08-28T15:28:29.5013668Z hint:
2026-08-28T15:28:29.5015726Z hint: 	git config --global init.defaultBranch <name>
2026-08-28T15:28:29.5017961Z hint:
2026-08-28T15:28:29.5022710Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2026-08-28T15:28:29.5025609Z hint: 'development'. The just-created branch can be renamed via this command:
2026-08-28T15:28:29.5027950Z hint:
2026-08-28T15:28:29.5029460Z hint: 	git branch -m <name>
2026-08-28T15:28:29.5031077Z hint:
2026-08-28T15:28:29.5033204Z hint: Disable this message with "git config set advice.defaultBranchName false"
2026-08-28T15:28:29.5036221Z Initialized empty Git repository in /home/runner/work/FinanceManager/FinanceManager/.git/
2026-08-28T15:28:29.5041938Z [command]/usr/bin/git remote add origin https://github.com/Gamexgit/FinanceManager
2026-08-28T15:28:29.5047487Z ##[endgroup]
2026-08-28T15:28:29.5049995Z ##[group]Disabling automatic garbage collection
2026-08-28T15:28:29.5052212Z [command]/usr/bin/git config --local gc.auto 0
2026-08-28T15:28:29.5142922Z ##[endgroup]
2026-08-28T15:28:29.5145718Z ##[group]Setting up auth
2026-08-28T15:28:29.5149990Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-28T15:28:29.5336461Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-28T15:28:29.6570110Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-28T15:28:29.6625820Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-28T15:28:29.6964468Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-28T15:28:29.7020053Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-28T15:28:29.7321615Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-08-28T15:28:29.7408260Z ##[endgroup]
2026-08-28T15:28:29.7415751Z ##[group]Fetching the repository
2026-08-28T15:28:29.7425210Z [command]/usr/bin/git -c protocol.version=2 fetch --prune --no-recurse-submodules origin +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/* +cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9:refs/remotes/pull/56/merge
2026-08-28T15:28:31.0116314Z From https://github.com/Gamexgit/FinanceManager
2026-08-28T15:28:31.0125894Z  * [new branch]      Sprint14/twr-xirr-performance-attribution -> origin/Sprint14/twr-xirr-performance-attribution
2026-08-28T15:28:31.0127987Z  * [new branch]      Sprint15/household-import-transfer-reconciliation-v1 -> origin/Sprint15/household-import-transfer-reconciliation-v1
2026-08-28T15:28:31.0130459Z  * [new branch]      Sprint16/hotfix-openpyxl-runtime-dependency -> origin/Sprint16/hotfix-openpyxl-runtime-dependency
2026-08-28T15:28:31.0132488Z  * [new branch]      Sprint16/smart-household-inbox-real-data-onboarding-v2 -> origin/Sprint16/smart-household-inbox-real-data-onboarding-v2
2026-08-28T15:28:31.0135127Z  * [new branch]      feat/budget-analytics-data-explorer-v1   -> origin/feat/budget-analytics-data-explorer-v1
2026-08-28T15:28:31.0136996Z  * [new branch]      feat/budget-categories-duplicates-cleanup -> origin/feat/budget-categories-duplicates-cleanup
2026-08-28T15:28:31.0138833Z  * [new branch]      feat/budget-categories-ux-fix            -> origin/feat/budget-categories-ux-fix
2026-08-28T15:28:31.0140258Z  * [new branch]      feat/budget-import-production-v2         -> origin/feat/budget-import-production-v2
2026-08-28T15:28:31.0141833Z  * [new branch]      feat/budget-monthly-import-rule-learning-v1 -> origin/feat/budget-monthly-import-rule-learning-v1
2026-08-28T15:28:31.0143317Z  * [new branch]      feat/budget-phase-1-4                    -> origin/feat/budget-phase-1-4
2026-08-28T15:28:31.0146027Z  * [new branch]      feat/budget-planning-forecast-v1         -> origin/feat/budget-planning-forecast-v1
2026-08-28T15:28:31.0147515Z  * [new branch]      feat/budget-planning-usability-v2        -> origin/feat/budget-planning-usability-v2
2026-08-28T15:28:31.0149429Z  * [new branch]      feat/budget-review-bulk-assign-confirm   -> origin/feat/budget-review-bulk-assign-confirm
2026-08-28T15:28:31.0151048Z  * [new branch]      feat/budget-workflow-help-ux             -> origin/feat/budget-workflow-help-ux
2026-08-28T15:28:31.0152591Z  * [new branch]      feat/finance-command-center-monthly-close-v1 -> origin/feat/finance-command-center-monthly-close-v1
2026-08-28T15:28:31.0154373Z  * [new branch]      feat/fixed-costs-subscriptions-v1        -> origin/feat/fixed-costs-subscriptions-v1
2026-08-28T15:28:31.0156049Z  * [new branch]      feat/grocery-matching-review-learning-v2 -> origin/feat/grocery-matching-review-learning-v2
2026-08-28T15:28:31.0158047Z  * [new branch]      feat/grocery-product-price-providers-v1  -> origin/feat/grocery-product-price-providers-v1
2026-08-28T15:28:31.0159873Z  * [new branch]      feat/migros-product-savings-grocery-optimizer-v1 -> origin/feat/migros-product-savings-grocery-optimizer-v1
2026-08-28T15:28:31.0161603Z  * [new branch]      feat/mobile-nav-income-csv-final         -> origin/feat/mobile-nav-income-csv-final
2026-08-28T15:28:31.0163088Z  * [new branch]      feat/mobile-nav-income-hotfix-v2         -> origin/feat/mobile-nav-income-hotfix-v2
2026-08-28T15:28:31.0164991Z  * [new branch]      feat/mobile-nav-income-planning-v1       -> origin/feat/mobile-nav-income-planning-v1
2026-08-28T15:28:31.0166585Z  * [new branch]      fix/manual-entry-uat-flows               -> origin/fix/manual-entry-uat-flows
2026-08-28T15:28:31.0168026Z  * [new branch]      fix/sprint16.2-insurance-family-order    -> origin/fix/sprint16.2-insurance-family-order
2026-08-28T15:28:31.0169683Z  * [new branch]      hotfix/sprint13-global-portfolio-aggregation -> origin/hotfix/sprint13-global-portfolio-aggregation
2026-08-28T15:28:31.0171316Z  * [new branch]      hotfix/sprint20-wealth-history-contract  -> origin/hotfix/sprint20-wealth-history-contract
2026-08-28T15:28:31.0172932Z  * [new branch]      hotfix/sprint23.1-asset-refresh-idempotency -> origin/hotfix/sprint23.1-asset-refresh-idempotency
2026-08-28T15:28:31.0174893Z  * [new branch]      hotfix/sprint23.2-unified-asset-refresh-usdt -> origin/hotfix/sprint23.2-unified-asset-refresh-usdt
2026-08-28T15:28:31.0176979Z  * [new branch]      hotfix/sprint8-kpi-overflow              -> origin/hotfix/sprint8-kpi-overflow
2026-08-28T15:28:31.0178664Z  * [new branch]      hotfix/sprint8-readonly-render           -> origin/hotfix/sprint8-readonly-render
2026-08-28T15:28:31.0180143Z  * [new branch]      integration/portfolio-phase3-to-main     -> origin/integration/portfolio-phase3-to-main
2026-08-28T15:28:31.0181145Z  * [new branch]      main                                     -> origin/main
2026-08-28T15:28:31.0182210Z  * [new branch]      sprint10/portfolio-go-live               -> origin/sprint10/portfolio-go-live
2026-08-28T15:28:31.0183829Z  * [new branch]      sprint11/portfolio-completeness-ux       -> origin/sprint11/portfolio-completeness-ux
2026-08-28T15:28:31.0185700Z  * [new branch]      sprint12/truewealth-verified-import      -> origin/sprint12/truewealth-verified-import
2026-08-28T15:28:31.0187027Z  * [new branch]      sprint13/postfinance-ledger-import       -> origin/sprint13/postfinance-ledger-import
2026-08-28T15:28:31.0188201Z  * [new branch]      sprint16.1/classification-coverage-import-readiness -> origin/sprint16.1/classification-coverage-import-readiness
2026-08-28T15:28:31.0189303Z  * [new branch]      sprint16.2/first-import-calibration-portal-flow -> origin/sprint16.2/first-import-calibration-portal-flow
2026-08-28T15:28:31.0190458Z  * [new branch]      sprint16.3/import-readiness-batched-decisions-performance -> origin/sprint16.3/import-readiness-batched-decisions-performance
2026-08-28T15:28:31.0191443Z  * [new branch]      sprint17a/data-truth                     -> origin/sprint17a/data-truth
2026-08-28T15:28:31.0192176Z  * [new branch]      sprint17b/equity-quote-refresh           -> origin/sprint17b/equity-quote-refresh
2026-08-28T15:28:31.0193004Z  * [new branch]      sprint17b/household-cockpit              -> origin/sprint17b/household-cockpit
2026-08-28T15:28:31.0194503Z  * [new branch]      sprint17c/data-truth-navigation-today-lite -> origin/sprint17c/data-truth-navigation-today-lite
2026-08-28T15:28:31.0195485Z  * [new branch]      sprint19/prior-year-actuals-simple-budget-v1 -> origin/sprint19/prior-year-actuals-simple-budget-v1
2026-08-28T15:28:31.0196594Z  * [new branch]      sprint2/navigation-design-shell          -> origin/sprint2/navigation-design-shell
2026-08-28T15:28:31.0197995Z  * [new branch]      sprint20/performance-data-readiness-v1   -> origin/sprint20/performance-data-readiness-v1
2026-08-28T15:28:31.0199892Z  * [new branch]      sprint20b/performance-activation-daily-valuations-v1 -> origin/sprint20b/performance-activation-daily-valuations-v1
2026-08-28T15:28:31.0201836Z  * [new branch]      sprint20e/market-data-recovery-crypto-activation-v1 -> origin/sprint20e/market-data-recovery-crypto-activation-v1
2026-08-28T15:28:31.0203451Z  * [new branch]      sprint20e/never-run-status-hotfix        -> origin/sprint20e/never-run-status-hotfix
2026-08-28T15:28:31.0205159Z  * [new branch]      sprint20e/provider-provenance-ui-hotfix  -> origin/sprint20e/provider-provenance-ui-hotfix
2026-08-28T15:28:31.0206741Z  * [new branch]      sprint20g1/crypto-reconciliation-cockpit -> origin/sprint20g1/crypto-reconciliation-cockpit
2026-08-28T15:28:31.0208415Z  * [new branch]      sprint20h.1/postfinance-upload-hardening-followup -> origin/sprint20h.1/postfinance-upload-hardening-followup
2026-08-28T15:28:31.0210689Z  * [new branch]      sprint20h.1/postfinance-upload-readiness -> origin/sprint20h.1/postfinance-upload-readiness
2026-08-28T15:28:31.0212389Z  * [new branch]      sprint21/current-import-performance-cockpit -> origin/sprint21/current-import-performance-cockpit
2026-08-28T15:28:31.0214311Z  * [new branch]      sprint3.1/reconciliation-semantic-hardening -> origin/sprint3.1/reconciliation-semantic-hardening
2026-08-28T15:28:31.0216480Z  * [new branch]      sprint3/reconciliation-snapshot-foundation -> origin/sprint3/reconciliation-snapshot-foundation
2026-08-28T15:28:31.0218161Z  * [new branch]      sprint4.1/portfolio-policy-contract-hardening -> origin/sprint4.1/portfolio-policy-contract-hardening
2026-08-28T15:28:31.0219814Z  * [new branch]      sprint4/portfolio-policy-foundation      -> origin/sprint4/portfolio-policy-foundation
2026-08-28T15:28:31.0221336Z  * [new branch]      sprint5/portfolio-performance-foundation -> origin/sprint5/portfolio-performance-foundation
2026-08-28T15:28:31.0223015Z  * [new branch]      sprint6/portfolio-data-ingestion-reconciliation -> origin/sprint6/portfolio-data-ingestion-reconciliation
2026-08-28T15:28:31.0225228Z  * [new branch]      sprint7/postfinance-portfolio-source     -> origin/sprint7/postfinance-portfolio-source
2026-08-28T15:28:31.0226867Z  * [new branch]      sprint8/market-fx-benchmark-risk         -> origin/sprint8/market-fx-benchmark-risk
2026-08-28T15:28:31.0228528Z  * [new branch]      sprint9/portfolio-basis-policy           -> origin/sprint9/portfolio-basis-policy
2026-08-28T15:28:31.0229501Z  * [new tag]         v0.3.0                                   -> v0.3.0
2026-08-28T15:28:31.0230243Z  * [new tag]         v0.3.1                                   -> v0.3.1
2026-08-28T15:28:31.0230961Z  * [new tag]         v0.3.2                                   -> v0.3.2
2026-08-28T15:28:31.0231792Z  * [new ref]         cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9 -> pull/56/merge
2026-08-28T15:28:31.0234118Z ##[endgroup]
2026-08-28T15:28:31.0234819Z ##[group]Determining the checkout info
2026-08-28T15:28:31.0235589Z ##[endgroup]
2026-08-28T15:28:31.0236183Z [command]/usr/bin/git sparse-checkout disable
2026-08-28T15:28:31.0238037Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-08-28T15:28:31.0280910Z ##[group]Checking out the ref
2026-08-28T15:28:31.0285594Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/56/merge
2026-08-28T15:28:31.0900867Z Note: switching to 'refs/remotes/pull/56/merge'.
2026-08-28T15:28:31.0918622Z 
2026-08-28T15:28:31.0921715Z You are in 'detached HEAD' state. You can look around, make experimental
2026-08-28T15:28:31.0922749Z changes and commit them, and you can discard any commits you make in this
2026-08-28T15:28:31.0923905Z state without impacting any branches by switching back to a branch.
2026-08-28T15:28:31.0924463Z 
2026-08-28T15:28:31.0924868Z If you want to create a new branch to retain commits you create, you may
2026-08-28T15:28:31.0925694Z do so (now or later) by using -c with the switch command. Example:
2026-08-28T15:28:31.0926174Z 
2026-08-28T15:28:31.0926381Z   git switch -c <new-branch-name>
2026-08-28T15:28:31.0926723Z 
2026-08-28T15:28:31.0926924Z Or undo this operation with:
2026-08-28T15:28:31.0927644Z 
2026-08-28T15:28:31.0927824Z   git switch -
2026-08-28T15:28:31.0928053Z 
2026-08-28T15:28:31.0928518Z Turn off this advice by setting config variable advice.detachedHead to false
2026-08-28T15:28:31.0929121Z 
2026-08-28T15:28:31.0929841Z HEAD is now at cc2b690 Merge 0f7a5b7ad9ec7f7c617ba1686ee4c27b3599fa47 into bef766b54576807f9963696202ada9bf32a98167
2026-08-28T15:28:31.0931952Z ##[endgroup]
2026-08-28T15:28:31.0984114Z [command]/usr/bin/git log -1 --format=%H
2026-08-28T15:28:31.1008420Z cc2b69028ee869fdec18e0f5cc1dc84c115cf6b9
2026-08-28T15:28:31.1402105Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:28:31.1404677Z ##[group]Run actions/setup-python@v5
2026-08-28T15:28:31.1405012Z with:
2026-08-28T15:28:31.1405275Z   python-version: 3.11
2026-08-28T15:28:31.1405559Z   cache: pip
2026-08-28T15:28:31.1405898Z   cache-dependency-path: requirements-ci.txt
2026-08-28T15:28:31.1406273Z   check-latest: false
2026-08-28T15:28:31.1409255Z   token: ***
2026-08-28T15:28:31.1409602Z   update-environment: true
2026-08-28T15:28:31.1409968Z   allow-prereleases: false
2026-08-28T15:28:31.1410309Z   freethreaded: false
2026-08-28T15:28:31.1410621Z env:
2026-08-28T15:28:31.1410904Z   PYTHONPATH: src
2026-08-28T15:28:31.1411236Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:31.1411775Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-28T15:28:31.1412423Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-28T15:28:31.1412945Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:31.1413317Z ##[endgroup]
2026-08-28T15:28:31.2900069Z ##[group]Installed versions
2026-08-28T15:28:31.2988520Z (node:2012) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-28T15:28:31.2990192Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-28T15:28:31.2991917Z Successfully set up CPython (3.11.16)
2026-08-28T15:28:31.2993071Z ##[endgroup]
2026-08-28T15:28:31.3572967Z [command]/opt/hostedtoolcache/Python/3.11.16/x64/bin/pip cache dir
2026-08-28T15:28:32.9766920Z /home/runner/.cache/pip
2026-08-28T15:28:33.0818174Z pip cache is not found
2026-08-28T15:28:33.1024265Z ##[group]Run python -m pip install -e . -r requirements-ci.txt
2026-08-28T15:28:33.1024861Z [36;1mpython -m pip install -e . -r requirements-ci.txt[0m
2026-08-28T15:28:33.1075737Z shell: /usr/bin/bash -e {0}
2026-08-28T15:28:33.1076029Z env:
2026-08-28T15:28:33.1076250Z   PYTHONPATH: src
2026-08-28T15:28:33.1076494Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:33.1076879Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-28T15:28:33.1077410Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-28T15:28:33.1077807Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:33.1078165Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:33.1078620Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:33.1079056Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:33.1079443Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:33.1079877Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:33.1080263Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:33.1080608Z ##[endgroup]
2026-08-28T15:28:34.2347224Z Obtaining file:///home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:28:34.2365395Z   Installing build dependencies: started
2026-08-28T15:28:35.0635345Z   Installing build dependencies: finished with status 'done'
2026-08-28T15:28:35.0637930Z   Checking if build backend supports build_editable: started
2026-08-28T15:28:35.4205543Z   Checking if build backend supports build_editable: finished with status 'done'
2026-08-28T15:28:35.4209386Z   Getting requirements to build editable: started
2026-08-28T15:28:35.7535231Z   Getting requirements to build editable: finished with status 'done'
2026-08-28T15:28:35.7542151Z   Preparing editable metadata (pyproject.toml): started
2026-08-28T15:28:35.9418181Z   Preparing editable metadata (pyproject.toml): finished with status 'done'
2026-08-28T15:28:36.0465285Z Collecting fastapi==0.136.1 (from -r requirements-ci.txt (line 1))
2026-08-28T15:28:36.1166426Z   Downloading fastapi-0.136.1-py3-none-any.whl.metadata (28 kB)
2026-08-28T15:28:36.1625259Z Collecting httpx==0.28.1 (from -r requirements-ci.txt (line 2))
2026-08-28T15:28:36.1694088Z   Downloading httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
2026-08-28T15:28:36.1941831Z Collecting Jinja2==3.1.6 (from -r requirements-ci.txt (line 3))
2026-08-28T15:28:36.2031409Z   Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
2026-08-28T15:28:36.2232653Z Collecting openpyxl==3.1.5 (from -r requirements-ci.txt (line 4))
2026-08-28T15:28:36.2311088Z   Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:36.3452704Z Collecting pandas==3.0.3 (from -r requirements-ci.txt (line 5))
2026-08-28T15:28:36.3531731Z   Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)
2026-08-28T15:28:36.4112562Z Collecting plotly==6.7.0 (from -r requirements-ci.txt (line 6))
2026-08-28T15:28:36.4208217Z   Downloading plotly-6.7.0-py3-none-any.whl.metadata (8.6 kB)
2026-08-28T15:28:36.5228402Z Collecting pydantic==2.13.4 (from -r requirements-ci.txt (line 7))
2026-08-28T15:28:36.5307747Z   Downloading pydantic-2.13.4-py3-none-any.whl.metadata (109 kB)
2026-08-28T15:28:36.5641263Z Collecting pypdf==6.14.2 (from -r requirements-ci.txt (line 8))
2026-08-28T15:28:36.5715768Z   Downloading pypdf-6.14.2-py3-none-any.whl.metadata (7.2 kB)
2026-08-28T15:28:36.5989494Z Collecting pytest==9.0.2 (from -r requirements-ci.txt (line 9))
2026-08-28T15:28:36.6069547Z   Downloading pytest-9.0.2-py3-none-any.whl.metadata (7.6 kB)
2026-08-28T15:28:36.9306324Z Collecting ruff==0.15.13 (from -r requirements-ci.txt (line 10))
2026-08-28T15:28:36.9383845Z   Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (26 kB)
2026-08-28T15:28:36.9709082Z Collecting streamlit==1.57.0 (from -r requirements-ci.txt (line 11))
2026-08-28T15:28:36.9801173Z   Downloading streamlit-1.57.0-py3-none-any.whl.metadata (9.6 kB)
2026-08-28T15:28:37.0057016Z Collecting uvicorn==0.47.0 (from -r requirements-ci.txt (line 12))
2026-08-28T15:28:37.0130855Z   Downloading uvicorn-0.47.0-py3-none-any.whl.metadata (6.7 kB)
2026-08-28T15:28:37.0286533Z Collecting xlrd==2.0.2 (from -r requirements-ci.txt (line 13))
2026-08-28T15:28:37.0360745Z   Downloading xlrd-2.0.2-py2.py3-none-any.whl.metadata (3.5 kB)
2026-08-28T15:28:37.0626540Z Collecting yfinance==1.3.0 (from -r requirements-ci.txt (line 14))
2026-08-28T15:28:37.0702021Z   Downloading yfinance-1.3.0-py2.py3-none-any.whl.metadata (6.1 kB)
2026-08-28T15:28:37.0965929Z Collecting starlette>=0.46.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:37.1112429Z   Downloading starlette-1.6.0-py3-none-any.whl.metadata (6.4 kB)
2026-08-28T15:28:37.1325210Z Collecting typing-extensions>=4.8.0 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:37.1392998Z   Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB)
2026-08-28T15:28:37.1545026Z Collecting typing-inspection>=0.4.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:37.1637686Z   Downloading typing_inspection-0.4.4-py3-none-any.whl.metadata (2.6 kB)
2026-08-28T15:28:37.1778995Z Collecting annotated-doc>=0.0.2 (from fastapi==0.136.1->-r requirements-ci.txt (line 1))
2026-08-28T15:28:37.1861253Z   Downloading annotated_doc-0.0.5-py3-none-any.whl.metadata (6.5 kB)
2026-08-28T15:28:37.2107037Z Collecting anyio (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:37.2184350Z   Downloading anyio-4.14.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:37.2393209Z Collecting certifi (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:37.2474201Z   Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:37.2668031Z Collecting httpcore==1.* (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:37.2744087Z   Downloading httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)
2026-08-28T15:28:37.2929228Z Collecting idna (from httpx==0.28.1->-r requirements-ci.txt (line 2))
2026-08-28T15:28:37.3006487Z   Downloading idna-3.19-py3-none-any.whl.metadata (9.2 kB)
2026-08-28T15:28:37.3494280Z Collecting MarkupSafe>=2.0 (from Jinja2==3.1.6->-r requirements-ci.txt (line 3))
2026-08-28T15:28:37.3571986Z   Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
2026-08-28T15:28:37.3710440Z Collecting et-xmlfile (from openpyxl==3.1.5->-r requirements-ci.txt (line 4))
2026-08-28T15:28:37.3788975Z   Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
2026-08-28T15:28:37.5799028Z Collecting numpy>=1.26.0 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:37.5885670Z   Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
2026-08-28T15:28:37.6039587Z Collecting python-dateutil>=2.8.2 (from pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:37.6116516Z   Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2026-08-28T15:28:37.6455253Z Collecting narwhals>=1.15.1 (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-28T15:28:37.6532154Z   Downloading narwhals-2.25.0-py3-none-any.whl.metadata (15 kB)
2026-08-28T15:28:37.6744950Z Collecting packaging (from plotly==6.7.0->-r requirements-ci.txt (line 6))
2026-08-28T15:28:37.6821749Z   Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
2026-08-28T15:28:37.6970644Z Collecting annotated-types>=0.6.0 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-28T15:28:37.7051740Z   Downloading annotated_types-0.8.0-py3-none-any.whl.metadata (15 kB)
2026-08-28T15:28:38.3506466Z Collecting pydantic-core==2.46.4 (from pydantic==2.13.4->-r requirements-ci.txt (line 7))
2026-08-28T15:28:38.3590943Z   Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
2026-08-28T15:28:38.3750281Z Collecting iniconfig>=1.0.1 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:38.3825477Z   Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:38.3977743Z Collecting pluggy<2,>=1.5 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:38.4051500Z   Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)
2026-08-28T15:28:38.4248222Z Collecting pygments>=2.7.2 (from pytest==9.0.2->-r requirements-ci.txt (line 9))
2026-08-28T15:28:38.4322186Z   Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)
2026-08-28T15:28:38.4520376Z Collecting altair!=5.4.0,!=5.4.1,<7,>=4.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.4615902Z   Downloading altair-6.2.2-py3-none-any.whl.metadata (11 kB)
2026-08-28T15:28:38.4789250Z Collecting blinker<2,>=1.5.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.4866631Z   Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
2026-08-28T15:28:38.5060216Z Collecting cachetools<8,>=5.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.5159742Z   Downloading cachetools-7.1.7-py3-none-any.whl.metadata (5.5 kB)
2026-08-28T15:28:38.5349028Z Collecting click<9,>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.5426389Z   Downloading click-8.5.0-py3-none-any.whl.metadata (2.6 kB)
2026-08-28T15:28:38.5669689Z Collecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.5746232Z   Downloading gitpython-3.1.61-py3-none-any.whl.metadata (13 kB)
2026-08-28T15:28:38.7232151Z Collecting pillow<13,>=7.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.7314514Z   Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.1 kB)
2026-08-28T15:28:38.7503361Z Collecting pydeck<1,>=0.8.0b4 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.7577280Z   Downloading pydeck-0.9.3-py2.py3-none-any.whl.metadata (4.2 kB)
2026-08-28T15:28:38.8832138Z Collecting protobuf<8,>=3.20 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:38.8909417Z   Downloading protobuf-7.36.0-cp310-abi3-manylinux2014_x86_64.whl.metadata (595 bytes)
2026-08-28T15:28:39.0005478Z Collecting pyarrow>=7.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.0092897Z   Downloading pyarrow-25.0.1-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.0 kB)
2026-08-28T15:28:39.0321850Z Collecting requests<3,>=2.27 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.0395469Z   Downloading requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
2026-08-28T15:28:39.0571186Z Collecting tenacity<10,>=8.1.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.0649420Z   Downloading tenacity-9.1.4-py3-none-any.whl.metadata (1.2 kB)
2026-08-28T15:28:39.0783872Z Collecting toml<2,>=0.10.1 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.0858308Z   Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
2026-08-28T15:28:39.1207230Z Collecting httptools>=0.6.3 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.1290394Z   Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (3.5 kB)
2026-08-28T15:28:39.1474925Z Collecting python-multipart>=0.0.10 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.1554663Z   Downloading python_multipart-0.0.32-py3-none-any.whl.metadata (2.1 kB)
2026-08-28T15:28:39.2522496Z Collecting websockets>=12.0.0 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.2601401Z   Downloading websockets-17.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.3 kB)
2026-08-28T15:28:39.2752806Z Collecting itsdangerous>=2.1.2 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.2828680Z   Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
2026-08-28T15:28:39.3228406Z Collecting watchdog<7,>=2.1.5 (from streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.3315128Z   Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)
2026-08-28T15:28:39.3508036Z Collecting h11>=0.8 (from uvicorn==0.47.0->-r requirements-ci.txt (line 12))
2026-08-28T15:28:39.3582889Z   Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
2026-08-28T15:28:39.3784851Z Collecting multitasking>=0.0.7 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.3858811Z   Downloading multitasking-0.0.13-py3-none-any.whl.metadata (16 kB)
2026-08-28T15:28:39.4073202Z Collecting platformdirs>=2.0.0 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.4148871Z   Downloading platformdirs-4.11.5-py3-none-any.whl.metadata (5.5 kB)
2026-08-28T15:28:39.4502182Z Collecting pytz>=2022.5 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.4581090Z   Downloading pytz-2026.3.post1-py2.py3-none-any.whl.metadata (22 kB)
2026-08-28T15:28:39.4988226Z Collecting frozendict>=2.3.4 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.5065120Z   Downloading frozendict-2.4.7-py3-none-any.whl.metadata (23 kB)
2026-08-28T15:28:39.5309974Z Collecting peewee>=3.16.2 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.5385327Z   Downloading peewee-4.4.0-py3-none-any.whl.metadata (10 kB)
2026-08-28T15:28:39.5581951Z Collecting beautifulsoup4>=4.11.1 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.5660153Z   Downloading beautifulsoup4-4.15.0-py3-none-any.whl.metadata (3.8 kB)
2026-08-28T15:28:39.6246018Z Collecting curl_cffi>=0.15 (from yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.6327673Z   Downloading curl_cffi-0.16.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (17 kB)
2026-08-28T15:28:39.6704780Z Collecting jsonschema>=3.0 (from altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.6783109Z   Downloading jsonschema-4.26.0-py3-none-any.whl.metadata (7.6 kB)
2026-08-28T15:28:39.7002878Z Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.7078805Z   Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
2026-08-28T15:28:39.7234196Z Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.7311237Z   Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:39.9035328Z Collecting charset_normalizer<4,>=2 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.9130345Z   Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (45 kB)
2026-08-28T15:28:39.9398106Z Collecting urllib3<3,>=1.26 (from requests<3,>=2.27->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:39.9473289Z   Downloading urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
2026-08-28T15:28:39.9777071Z Collecting soupsieve>=1.6.1 (from beautifulsoup4>=4.11.1->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:39.9852214Z   Downloading soupsieve-2.9.2-py3-none-any.whl.metadata (4.6 kB)
2026-08-28T15:28:40.0826832Z Collecting cffi>=2.0.0 (from curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:40.1041149Z   Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
2026-08-28T15:28:40.1267549Z Collecting pycparser (from cffi>=2.0.0->curl_cffi>=0.15->yfinance==1.3.0->-r requirements-ci.txt (line 14))
2026-08-28T15:28:40.1345081Z   Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
2026-08-28T15:28:40.1542314Z Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:40.1617010Z   Downloading attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)
2026-08-28T15:28:40.1783240Z Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:40.1858677Z   Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl.metadata (2.9 kB)
2026-08-28T15:28:40.2070215Z Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:40.2157330Z   Downloading referencing-0.37.0-py3-none-any.whl.metadata (2.8 kB)
2026-08-28T15:28:40.5239814Z Collecting rpds-py>=0.25.0 (from jsonschema>=3.0->altair!=5.4.0,!=5.4.1,<7,>=4.0->streamlit==1.57.0->-r requirements-ci.txt (line 11))
2026-08-28T15:28:40.5320674Z   Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.1 kB)
2026-08-28T15:28:40.5560609Z Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas==3.0.3->-r requirements-ci.txt (line 5))
2026-08-28T15:28:40.5636460Z   Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2026-08-28T15:28:40.5873684Z Downloading fastapi-0.136.1-py3-none-any.whl (117 kB)
2026-08-28T15:28:40.6051169Z Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
2026-08-28T15:28:40.6203031Z Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
2026-08-28T15:28:40.6376925Z Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
2026-08-28T15:28:40.6613963Z Downloading pandas-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (11.3 MB)
2026-08-28T15:28:40.8930995Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 51.0 MB/s  0:00:00
2026-08-28T15:28:40.9012813Z Downloading plotly-6.7.0-py3-none-any.whl (9.9 MB)
2026-08-28T15:28:40.9808864Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.9/9.9 MB 126.6 MB/s  0:00:00
2026-08-28T15:28:40.9891440Z Downloading pydantic-2.13.4-py3-none-any.whl (472 kB)
2026-08-28T15:28:41.0001455Z Downloading pypdf-6.14.2-py3-none-any.whl (349 kB)
2026-08-28T15:28:41.0114945Z Downloading pytest-9.0.2-py3-none-any.whl (374 kB)
2026-08-28T15:28:41.0230542Z Downloading ruff-0.15.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.4 MB)
2026-08-28T15:28:41.0861071Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 189.8 MB/s  0:00:00
2026-08-28T15:28:41.0984269Z Downloading streamlit-1.57.0-py3-none-any.whl (9.2 MB)
2026-08-28T15:28:41.1468220Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.2/9.2 MB 197.9 MB/s  0:00:00
2026-08-28T15:28:41.1546982Z Downloading uvicorn-0.47.0-py3-none-any.whl (71 kB)
2026-08-28T15:28:41.1656753Z Downloading xlrd-2.0.2-py2.py3-none-any.whl (96 kB)
2026-08-28T15:28:41.1764288Z Downloading yfinance-1.3.0-py2.py3-none-any.whl (133 kB)
2026-08-28T15:28:41.1864673Z Downloading pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
2026-08-28T15:28:41.1966080Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 232.1 MB/s  0:00:00
2026-08-28T15:28:41.2041203Z Downloading altair-6.2.2-py3-none-any.whl (797 kB)
2026-08-28T15:28:41.2121407Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 797.6/797.6 kB 105.3 MB/s  0:00:00
2026-08-28T15:28:41.2196855Z Downloading blinker-1.9.0-py3-none-any.whl (8.5 kB)
2026-08-28T15:28:41.2286291Z Downloading cachetools-7.1.7-py3-none-any.whl (16 kB)
2026-08-28T15:28:41.2382786Z Downloading click-8.5.0-py3-none-any.whl (125 kB)
2026-08-28T15:28:41.2480513Z Downloading gitpython-3.1.61-py3-none-any.whl (222 kB)
2026-08-28T15:28:41.2579327Z Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
2026-08-28T15:28:41.2672547Z Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
2026-08-28T15:28:41.2772490Z Downloading numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.9 MB)
2026-08-28T15:28:41.3361300Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.9/16.9 MB 297.8 MB/s  0:00:00
2026-08-28T15:28:41.3472152Z Downloading pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.9 MB)
2026-08-28T15:28:41.3732265Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.9/6.9 MB 290.3 MB/s  0:00:00
2026-08-28T15:28:41.3811840Z Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)
2026-08-28T15:28:41.3914476Z Downloading protobuf-7.36.0-cp310-abi3-manylinux2014_x86_64.whl (340 kB)
2026-08-28T15:28:41.4014274Z Downloading pydeck-0.9.3-py2.py3-none-any.whl (11.4 MB)
2026-08-28T15:28:41.5051508Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.4/11.4 MB 111.6 MB/s  0:00:00
2026-08-28T15:28:41.5130775Z Downloading requests-2.34.2-py3-none-any.whl (73 kB)
2026-08-28T15:28:41.5227845Z Downloading charset_normalizer-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (262 kB)
2026-08-28T15:28:41.5326506Z Downloading idna-3.19-py3-none-any.whl (68 kB)
2026-08-28T15:28:41.5423964Z Downloading smmap-5.0.3-py3-none-any.whl (24 kB)
2026-08-28T15:28:41.5514586Z Downloading tenacity-9.1.4-py3-none-any.whl (28 kB)
2026-08-28T15:28:41.5624682Z Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
2026-08-28T15:28:41.5724884Z Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB)
2026-08-28T15:28:41.5822038Z Downloading urllib3-2.7.0-py3-none-any.whl (131 kB)
2026-08-28T15:28:41.5909991Z Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)
2026-08-28T15:28:41.6005041Z Downloading annotated_doc-0.0.5-py3-none-any.whl (5.3 kB)
2026-08-28T15:28:41.6111424Z Downloading annotated_types-0.8.0-py3-none-any.whl (13 kB)
2026-08-28T15:28:41.6214925Z Downloading anyio-4.14.2-py3-none-any.whl (125 kB)
2026-08-28T15:28:41.6317171Z Downloading beautifulsoup4-4.15.0-py3-none-any.whl (109 kB)
2026-08-28T15:28:41.6407213Z Downloading certifi-2026.7.22-py3-none-any.whl (136 kB)
2026-08-28T15:28:41.6508236Z Downloading curl_cffi-0.16.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (13.5 MB)
2026-08-28T15:28:41.6982960Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.5/13.5 MB 303.6 MB/s  0:00:00
2026-08-28T15:28:41.7051744Z Downloading cffi-2.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (217 kB)
2026-08-28T15:28:41.7151173Z Downloading frozendict-2.4.7-py3-none-any.whl (16 kB)
2026-08-28T15:28:41.7243366Z Downloading h11-0.16.0-py3-none-any.whl (37 kB)
2026-08-28T15:28:41.7344704Z Downloading httptools-0.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (464 kB)
2026-08-28T15:28:41.7439772Z Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB)
2026-08-28T15:28:41.7534859Z Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)
2026-08-28T15:28:41.7622367Z Downloading jsonschema-4.26.0-py3-none-any.whl (90 kB)
2026-08-28T15:28:41.7716060Z Downloading attrs-26.1.0-py3-none-any.whl (67 kB)
2026-08-28T15:28:41.7808712Z Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
2026-08-28T15:28:41.7899230Z Downloading markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
2026-08-28T15:28:41.7993406Z Downloading multitasking-0.0.13-py3-none-any.whl (16 kB)
2026-08-28T15:28:41.8094920Z Downloading narwhals-2.25.0-py3-none-any.whl (467 kB)
2026-08-28T15:28:41.8215080Z Downloading packaging-26.3-py3-none-any.whl (129 kB)
2026-08-28T15:28:41.8335787Z Downloading peewee-4.4.0-py3-none-any.whl (191 kB)
2026-08-28T15:28:41.8445309Z Downloading platformdirs-4.11.5-py3-none-any.whl (23 kB)
2026-08-28T15:28:41.8544721Z Downloading pyarrow-25.0.1-cp311-cp311-manylinux_2_28_x86_64.whl (50.1 MB)
2026-08-28T15:28:42.1714208Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.1/50.1 MB 159.8 MB/s  0:00:00
2026-08-28T15:28:42.1778441Z Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB)
2026-08-28T15:28:42.1851939Z    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 221.2 MB/s  0:00:00
2026-08-28T15:28:42.1945138Z Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2026-08-28T15:28:42.2035594Z Downloading python_multipart-0.0.32-py3-none-any.whl (30 kB)
2026-08-28T15:28:42.2159811Z Downloading pytz-2026.3.post1-py2.py3-none-any.whl (508 kB)
2026-08-28T15:28:42.2272393Z Downloading referencing-0.37.0-py3-none-any.whl (26 kB)
2026-08-28T15:28:42.2375270Z Downloading rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (371 kB)
2026-08-28T15:28:42.2489493Z Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2026-08-28T15:28:42.2583967Z Downloading soupsieve-2.9.2-py3-none-any.whl (37 kB)
2026-08-28T15:28:42.2672036Z Downloading starlette-1.6.0-py3-none-any.whl (75 kB)
2026-08-28T15:28:42.2774377Z Downloading typing_inspection-0.4.4-py3-none-any.whl (14 kB)
2026-08-28T15:28:42.2878439Z Downloading websockets-17.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (224 kB)
2026-08-28T15:28:42.2979272Z Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
2026-08-28T15:28:42.3074919Z Downloading pycparser-3.0-py3-none-any.whl (48 kB)
2026-08-28T15:28:42.6043366Z Building wheels for collected packages: jarvis-finance
2026-08-28T15:28:42.6048258Z   Building editable for jarvis-finance (pyproject.toml): started
2026-08-28T15:28:42.8452388Z   Building editable for jarvis-finance (pyproject.toml): finished with status 'done'
2026-08-28T15:28:42.8458612Z   Created wheel for jarvis-finance: filename=jarvis_finance-0.1.0-0.editable-py3-none-any.whl size=1510 sha256=3d1ddb0c0e45d92ce95e4fb0a96c166e43560f025f339a7cefd6c1a6bc2ed2fb
2026-08-28T15:28:42.8460559Z   Stored in directory: /tmp/pip-ephem-wheel-cache-u2755xfo/wheels/ad/81/a6/5383a3c32505f4e59976cc011a336e07c6284dcaf35f5a7ea5
2026-08-28T15:28:42.8475648Z Successfully built jarvis-finance
2026-08-28T15:28:42.9826932Z Installing collected packages: pytz, multitasking, xlrd, websockets, watchdog, urllib3, typing-extensions, toml, tenacity, soupsieve, smmap, six, ruff, rpds-py, python-multipart, pypdf, pygments, pycparser, pyarrow, protobuf, pluggy, platformdirs, pillow, peewee, packaging, numpy, narwhals, MarkupSafe, itsdangerous, iniconfig, idna, httptools, h11, frozendict, et-xmlfile, click, charset_normalizer, certifi, cachetools, blinker, attrs, annotated-types, annotated-doc, uvicorn, typing-inspection, requests, referencing, python-dateutil, pytest, pydantic-core, plotly, openpyxl, Jinja2, httpcore, gitdb, cffi, beautifulsoup4, anyio, starlette, pydeck, pydantic, pandas, jsonschema-specifications, jarvis-finance, httpx, gitpython, curl_cffi, yfinance, jsonschema, fastapi, altair, streamlit
2026-08-28T15:28:59.4576344Z 
2026-08-28T15:28:59.4611060Z Successfully installed Jinja2-3.1.6 MarkupSafe-3.0.3 altair-6.2.2 annotated-doc-0.0.5 annotated-types-0.8.0 anyio-4.14.2 attrs-26.1.0 beautifulsoup4-4.15.0 blinker-1.9.0 cachetools-7.1.7 certifi-2026.7.22 cffi-2.1.1 charset_normalizer-3.5.1 click-8.5.0 curl_cffi-0.16.2 et-xmlfile-2.0.0 fastapi-0.136.1 frozendict-2.4.7 gitdb-4.0.12 gitpython-3.1.61 h11-0.16.0 httpcore-1.0.9 httptools-0.8.0 httpx-0.28.1 idna-3.19 iniconfig-2.3.0 itsdangerous-2.2.0 jarvis-finance-0.1.0 jsonschema-4.26.0 jsonschema-specifications-2025.9.1 multitasking-0.0.13 narwhals-2.25.0 numpy-2.4.6 openpyxl-3.1.5 packaging-26.3 pandas-3.0.3 peewee-4.4.0 pillow-12.3.0 platformdirs-4.11.5 plotly-6.7.0 pluggy-1.6.0 protobuf-7.36.0 pyarrow-25.0.1 pycparser-3.0 pydantic-2.13.4 pydantic-core-2.46.4 pydeck-0.9.3 pygments-2.21.0 pypdf-6.14.2 pytest-9.0.2 python-dateutil-2.9.0.post0 python-multipart-0.0.32 pytz-2026.3.post1 referencing-0.37.0 requests-2.34.2 rpds-py-2026.6.3 ruff-0.15.13 six-1.17.0 smmap-5.0.3 soupsieve-2.9.2 starlette-1.6.0 streamlit-1.57.0 tenacity-9.1.4 toml-0.10.2 typing-extensions-4.16.0 typing-inspection-0.4.4 urllib3-2.7.0 uvicorn-0.47.0 watchdog-6.0.0 websockets-17.1 xlrd-2.0.2 yfinance-1.3.0
2026-08-28T15:28:59.7648450Z ##[group]Run set -euo pipefail
2026-08-28T15:28:59.7648797Z [36;1mset -euo pipefail[0m
2026-08-28T15:28:59.7649133Z [36;1mmkdir -p /tmp/financemanager-phase3-backend/runtime[0m
2026-08-28T15:28:59.7649644Z [36;1mpython -m pytest tests -q | tee /tmp/financemanager-phase3-backend/pytest.log[0m
2026-08-28T15:28:59.7650417Z [36;1mpassed_count=$(sed -nE 's/.*(^|[^0-9])([0-9]+) passed.*/\2/p' /tmp/financemanager-phase3-backend/pytest.log | tail -n 1)[0m
2026-08-28T15:28:59.7650984Z [36;1mtest -n "${passed_count}"[0m
2026-08-28T15:28:59.7651288Z [36;1mtest "${passed_count}" -ge 667[0m
2026-08-28T15:28:59.7695734Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-08-28T15:28:59.7696112Z env:
2026-08-28T15:28:59.7696345Z   PYTHONPATH: src
2026-08-28T15:28:59.7696582Z   JARVIS_FINANCE_ENV: test
2026-08-28T15:28:59.7696970Z   JARVIS_FINANCE_DB_PATH: /tmp/financemanager-phase3-backend/finance.sqlite3
2026-08-28T15:28:59.7697548Z   JARVIS_FINANCE_RUNTIME_DIR: /tmp/financemanager-phase3-backend/runtime
2026-08-28T15:28:59.7697974Z   JARVIS_FINANCE_WRITE_MODE: disabled
2026-08-28T15:28:59.7698330Z   pythonLocation: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.7698771Z   PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib/pkgconfig
2026-08-28T15:28:59.7699207Z   Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.7699600Z   Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.7699992Z   Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.16/x64
2026-08-28T15:28:59.7700378Z   LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.16/x64/lib
2026-08-28T15:28:59.7700719Z ##[endgroup]
2026-08-28T15:29:25.5885038Z ........................................................................ [  6%]
2026-08-28T15:29:41.8467069Z ........................................................................ [ 13%]
2026-08-28T15:29:58.7870405Z ........................................................................ [ 19%]
2026-08-28T15:30:16.6752633Z ........................................................................ [ 26%]
2026-08-28T15:30:32.2483415Z ........................................................................ [ 33%]
2026-08-28T15:30:49.2726534Z ........................................................................ [ 39%]
2026-08-28T15:30:58.6316128Z ........................................................................ [ 46%]
2026-08-28T15:31:20.2494451Z ........................................................................ [ 52%]
2026-08-28T15:31:40.4252693Z ........................................................................ [ 59%]
2026-08-28T15:32:11.5014372Z ........................................................................ [ 66%]
2026-08-28T15:32:29.3205977Z ........................................................................ [ 72%]
2026-08-28T15:32:46.1036315Z ........................................................................ [ 79%]
2026-08-28T15:33:05.3625919Z ........................................................................ [ 86%]
2026-08-28T15:33:21.4817041Z ........................................................................ [ 92%]
2026-08-28T15:33:41.4759500Z ........................................................................ [ 99%]
2026-08-28T15:33:43.1981405Z .......                                                                  [100%]
2026-08-28T15:33:43.1983934Z =============================== warnings summary ===============================
2026-08-28T15:33:43.1986190Z ../../../../../opt/hostedtoolcache/Python/3.11.16/x64/lib/python3.11/site-packages/fastapi/testclient.py:1
2026-08-28T15:33:43.1990777Z   /opt/hostedtoolcache/Python/3.11.16/x64/lib/python3.11/site-packages/fastapi/testclient.py:1: StarletteDeprecationWarning: Using `httpx` with `starlette.testclient` is deprecated; install `httpx2` instead.
2026-08-28T15:33:43.1995467Z     from starlette.testclient import TestClient as TestClient  # noqa
2026-08-28T15:33:43.1997077Z 
2026-08-28T15:33:43.1999981Z -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
2026-08-28T15:33:43.2002978Z 1087 passed, 1 warning in 281.86s (0:04:41)
2026-08-28T15:33:43.8602472Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:33:43.8603984Z Post job cleanup.
2026-08-28T15:33:44.0028577Z (node:2751) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
2026-08-28T15:33:44.0029918Z (Use `node --trace-deprecation ...` to show where the warning was created)
2026-08-28T15:33:44.0765124Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/work/FinanceManager/FinanceManager --files-from manifest.txt --use-compress-program zstdmt
2026-08-28T15:33:44.8916728Z Failed to save: Unable to reserve cache with key setup-python-Linux-x64-24.04-Ubuntu-python-3.11.16-pip-1142f0e2496362389faab45cc2b2d5dacbb96b059f6c5143fd25b1b0407d64f2, another job may be creating this cache.
2026-08-28T15:33:44.9171051Z Node 20 is being deprecated. This workflow is running with Node 24 by default. If you need to temporarily use Node 20, you can set the ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true environment variable. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-08-28T15:33:44.9172236Z Post job cleanup.
2026-08-28T15:33:45.0209910Z [command]/usr/bin/git version
2026-08-28T15:33:45.0291336Z git version 2.55.0
2026-08-28T15:33:45.0371812Z Temporarily overriding HOME='/home/runner/work/_temp/f2da4764-02e8-4e80-9b93-dfaee5692f59' before making global git config changes
2026-08-28T15:33:45.0384504Z Adding repository directory to the temporary git global config as a safe directory
2026-08-28T15:33:45.0386244Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/FinanceManager/FinanceManager
2026-08-28T15:33:45.0474832Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-08-28T15:33:45.0535134Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-08-28T15:33:45.0954703Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-08-28T15:33:45.1006710Z http.https://github.com/.extraheader
2026-08-28T15:33:45.1035172Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-08-28T15:33:45.1129315Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-08-28T15:33:45.1544978Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-08-28T15:33:45.1607298Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-08-28T15:33:45.2338973Z Cleaning up orphan processes
2026-08-28T15:33:45.2633008Z ##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
